package br.ucb.damas.control.jogo.jogadas;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import br.ucb.damas.control.jogo.valicacoes.ValidaJogadas;
import br.ucb.damas.entidades.Cor;
import br.ucb.damas.entidades.Peca;
import br.ucb.damas.ui.paineis.tabuleiro.Tabuleiro;

public class JogadaJogador implements Jogada,MouseListener{
	
	private Tabuleiro tabuleiro;
	private boolean selecionou;
	private int xClicado;
	private int yClicado;
	public JogadaJogador(Tabuleiro tabuleiro) {
		this.tabuleiro=tabuleiro;
		this.selecionou=false;
		this.tabuleiro.addMouseListener(this);
		
	}
	
	
	/*
	 * selecionar a peca jogada
	 * escolher a direcao em que vai jogar
	 * 
	 */
	@Override
	public boolean jogar() {
		int x = this.tabuleiro.getIndiceXClicado(xClicado);
		int y = this.tabuleiro.getIndiceYClicado(yClicado);
		
		if(x!=-1 && y!=-1){
			Peca peca = this.tabuleiro.getPeca(x, y);
			if(peca!=null && peca.getCor()==Cor.BRANCA){
				this.selecionou=true;
				this.tabuleiro.setxSelecionado(x);
				this.tabuleiro.setySelecionado(y);
			} if(peca==null){
				x = this.tabuleiro.getxSelecionado();
				y = this.tabuleiro.getySelecionado();
				int xDestino = this.tabuleiro.getIndiceXClicado(xClicado);
				int yDestino = this.tabuleiro.getIndiceYClicado(yClicado);
				if(this.selecionou){
					if(ValidaJogadas.isPosicaoValida(x, y, xDestino, yDestino,this.tabuleiro)){
//						this.tabuleiro.setxSelecionado(-1);
//						this.tabuleiro.setySelecionado(-1);
						System.out.println("posicao valida");
						this.tabuleiro.moverPeca(x, y, xDestino, yDestino);
						return true;
					}else if(ValidaJogadas.isPecaComida(this.tabuleiro.getPecas(), x, y, xDestino, yDestino)){
						System.out.println("comeu uma peca");
						ValidaJogadas.comerPeca(this.tabuleiro.getPecas(), x, y, xDestino, yDestino);
						this.tabuleiro.moverPeca(x, y, xDestino, yDestino);
						return true;
					}else
						System.out.println("posicao invalida");
					this.selecionou=false;
					
				}
			}
			
			
		}
			
		
		return false;
	}
	
	@Override
	public void reset() {
		this.selecionou=false;
		this.xClicado=-1;
		this.yClicado=-1;
		
	}
	
	public int getxSelecionado() {
		return this.tabuleiro.getxSelecionado();
	}


	public void setxSelecionado(int xSelecionado) {
		this.tabuleiro.setxSelecionado(xSelecionado);
		
	}


	public int getySelecionado() {
		return this.tabuleiro.getySelecionado();
	}


	public void setySelecionado(int ySelecionado) {
		this.tabuleiro.setySelecionado(ySelecionado);
	}


	@Override
	public void mouseClicked(MouseEvent event) {
		this.xClicado=event.getX();
		this.yClicado=event.getY();		
		
	}
	@Override
	public void mouseEntered(MouseEvent arg0) {}
	@Override
	public void mouseExited(MouseEvent arg0) {}
	@Override
	public void mousePressed(MouseEvent arg0) {}
	@Override
	public void mouseReleased(MouseEvent arg0) {}	
}
